home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 002 / chedit.arc / EGA.I < prev    next >
Text File  |  1986-07-23  |  4KB  |  92 lines

  1. {
  2.    This program is placed in the public domain by its author, William Couture.
  3.    Copyright (c) 1986 by DDI.   All Rights Reserved.
  4. }
  5.  
  6. procedure loadega(var cshapes:charset; block:integer);
  7.               { block is 0 or 1, depending on whether you want to load
  8.                 the lower 128 characters (the standard ASCII characters),
  9.                 or the upper 128 characters (the graphics characters).
  10.                 Note, however, that loading the upper characters will
  11.                 recalculate the character sizes based on the size of the
  12.                 characters being loaded.  Thus, if you load an 8 x 8 into
  13.                 the upper characters, you will get an 8 x 8 display in
  14.                 the lower 128 characters, even if the 8 x 14 character set
  15.                 is still loaded.  This can be ugly.... }
  16.  
  17.               { This procedure will load a CHEDIT character set as the
  18.                 EGA resident character set.  As CHEDIT character sets are
  19.                 8 x 8, this will allow you to have a 43 line display, but
  20.                 unfortunately most software does not understand a 43 line
  21.                 display and squishes everything into the top 25 lines.  Oh,
  22.                 well... }
  23.  
  24.               { One last warning:  After loading an 8 x 8 character set,
  25.                 you will have to reset the cursor type so that you have
  26.                 a visible cursor (the EGA cursor is on lines 12-13, which
  27.                 are not displayed when characters are 8 rows high. }
  28.    begin
  29.       inline($b8/$10/$11/$8b/$56/<block/$b1/$07/$d3/$e2/$b9/$80/$00/
  30.              $bb/$00/$08/$55/$c4/$6e/<cshapes/$cd/$10/$5d);
  31.    end;
  32.  
  33. procedure loadega14(var shapes1,shapes2:charset; block:integer);
  34.               { block is 0 or 1, depending on whether you want to load
  35.                 the lower 128 characters (the standard ASCII characters),
  36.                 or the upper 128 characters (the graphics characters).
  37.                 Note, however, that loading the upper characters will
  38.                 recalculate the character sizes based on the size of the
  39.                 characters being loaded.  Thus, if you load an 8 x 14 into
  40.                 the upper characters, you will get an 8 x 14 display in
  41.                 the lower 128 characters, even if an 8 x 8 character set
  42.                 is still loaded. }
  43.  
  44.               { This procedure will combine two CHEDIT character sets into
  45.                 an 8 x 14 character set for use as an EGA resident character
  46.                 set (See the chedit documentation for details on the contents
  47.                 of the character sets. }
  48.  
  49.    var newshape : array[0..1791] of byte;
  50.        ii,j,k,l : integer;
  51.    
  52.    begin             { This is sort of like shuffling a deck }
  53.       l := 0;
  54.       for ii := 0 to 1 do   { there are 2 sets of 32 characters in each }
  55.          begin              { character set }
  56.             i := ii * 64;
  57.             for j := 0 to 31 do
  58.                begin
  59.                   for k := 0 to 7 do  { get the top 8 rows }
  60.                      begin
  61.                         newshape[l] := shapes1[(i+j)*8+k];
  62.                         l := l+1;
  63.                      end;
  64.                   for k := 0 to 5 do  { and the bottom 6 rows }
  65.                       begin
  66.                         newshape[l] := shapes1[(i+j+32)*8+k];
  67.                         l := l+1;
  68.                      end;
  69.                end;
  70.          end;
  71.       for ii := 0 to 1 do     { now do it again for the 2nd (upper 64) set }
  72.          begin                { of characters }
  73.             i := ii * 64;
  74.             for j := 0 to 31 do
  75.                begin
  76.                   for k := 0 to 7 do
  77.                      begin
  78.                         newshape[l] := shapes2[(i+j)*8+k];
  79.                         l := l+1;
  80.                      end;
  81.                   for k := 0 to 5 do
  82.                      begin
  83.                         newshape[l] := shapes2[(i+j+32)*8+k];
  84.                         l := l+1;
  85.                      end;
  86.                end;
  87.          end;
  88.  
  89.       inline($8c/$d0/$8e/$c0/$b8/$10/$11/$8b/$96/block/$b1/$07/$d3/$d2/
  90.              $b9/$80/$00/$bb/$00/$0e/$55/$81/$c5/newshape/$cd/$10/$5d);
  91.    end;
  92.